* files.el (dir-locals-read-from-file): Mention dir-locals in any error message.
authorGlenn Morris <rgm@gnu.org>
Sun, 6 May 2012 17:57:28 +0000 (10:57 -0700)
committerGlenn Morris <rgm@gnu.org>
Sun, 6 May 2012 17:57:28 +0000 (10:57 -0700)
lisp/ChangeLog
lisp/files.el

index 021331cb8dd5dcd39549c342f17546a52258d584..cfde3534d77f5925bc14f22ba2fc907ba1da6b7a 100644 (file)
@@ -1,3 +1,8 @@
+2012-05-06  Glenn Morris  <rgm@gnu.org>
+
+       * files.el (dir-locals-read-from-file):
+       Mention dir-locals in any error message.
+
 2012-05-06  Chong Yidong  <cyd@gnu.org>
 
        * emacs-lisp/package.el (package-built-in-p): Handle the `emacs'
index 8df2942195eeb1c400c0bdc538ae49f1d07cd9b2..6a91129dd1ccce80a78edb4501683a1ddb8a13c1 100644 (file)
@@ -3623,19 +3623,21 @@ FILE is the name of the file holding the variables to apply.
 The new class name is the same as the directory in which FILE
 is found.  Returns the new class name."
   (with-temp-buffer
-    ;; Errors reading the file are not very informative.
-    ;; Eg just "Error: (end-of-file)" does not give any clue that the
-    ;; problem is related to dir-locals.
-    (with-demoted-errors
-      (insert-file-contents file)
-      (let* ((dir-name (file-name-directory file))
-            (class-name (intern dir-name))
-            (variables (let ((read-circle nil))
-                         (read (current-buffer)))))
-       (dir-locals-set-class-variables class-name variables)
-       (dir-locals-set-directory-class dir-name class-name
-                                       (nth 5 (file-attributes file)))
-       class-name))))
+    ;; This is with-demoted-errors, but we want to mention dir-locals
+    ;; in any error message.
+    (let ((err (make-symbol "err")))
+      (condition-case err
+         (progn
+           (insert-file-contents file)
+           (let* ((dir-name (file-name-directory file))
+                  (class-name (intern dir-name))
+                  (variables (let ((read-circle nil))
+                               (read (current-buffer)))))
+             (dir-locals-set-class-variables class-name variables)
+             (dir-locals-set-directory-class dir-name class-name
+                                             (nth 5 (file-attributes file)))
+             class-name))
+       (error (message "Error reading dir-locals: %S" err) nil)))))
 
 (defun hack-dir-local-variables ()
   "Read per-directory local variables for the current buffer.